package com.pe.pgn.clubpgn.service.impl;

import java.math.BigDecimal;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.pe.pgn.clubpgn.dao.IncrementalDao;
import com.pe.pgn.clubpgn.domain.ClpbIncremental;
import com.pe.pgn.clubpgn.domain.ClpdPremioIncremental;
import com.pe.pgn.clubpgn.domain.beans.BNIncremental;
import com.pe.pgn.clubpgn.domain.beans.BNPremioIncremental;
import com.pe.pgn.clubpgn.service.IncrementalService;

@Service("incrementalService")
public class IncrementalServiceImpl extends GenericManagerImpl<ClpbIncremental, Long> implements
		IncrementalService {

	@Autowired
	private IncrementalDao incrementalDao;

	public List<BNIncremental> buscarIncrementales(Long coPrograma,
			String deIncremental, String stIncremental, boolean esInicial) {
		return incrementalDao.buscarIncrementales(coPrograma, deIncremental, stIncremental, esInicial);
	}

	public void eliminarIncremental(Long id) {
		incrementalDao.eliminarIncremental(id);
	}

	public void guardarIncremental(ClpbIncremental incremental) {
		incrementalDao.guardarIncremental(incremental);
	}

	public ClpbIncremental obtenerIncremental(Long id) {
		return incrementalDao.obtenerIncremental(id);
	}

	public BNPremioIncremental obtenerDatosIncremental(Long id) {
		return incrementalDao.obtenerDatosIncremental(id);
	}

	public List<ClpdPremioIncremental> obtenerPremiosPorIncremental(Long id) {
		return incrementalDao.obtenerPremiosPorIncremental(id);
	}

	public Long eliminarPremio(BigDecimal id) {
		return incrementalDao.eliminarPremio(id);
	}

	@Override
	public void guardarPremioIncremental(BNPremioIncremental premioIncremental) {
		
		ClpdPremioIncremental clpdPremioIncremental = new ClpdPremioIncremental();
		clpdPremioIncremental.setDePremioIncremental(premioIncremental.getDePremioIncremental());
		clpdPremioIncremental.setVaCantidadMinimaRequerida(premioIncremental.getVaCantidadMinimaRequerida());
		clpdPremioIncremental.setVaCantidadPremio(premioIncremental.getVaCantidadPremio());
		
		if(premioIncremental.getId() != null && 
				!premioIncremental.getId().equals(BigDecimal.ONE.negate())){
			clpdPremioIncremental.setId(new Long(premioIncremental.getId().toString()));
			clpdPremioIncremental.setStPremioIncremental(Boolean.TRUE);
		}
		
		ClpbIncremental clpbIncremental = new ClpbIncremental();
		clpbIncremental.setId(new Long(premioIncremental.getCoIncremental().toString()));
		clpdPremioIncremental.setClpbIncremental(clpbIncremental);
		
		incrementalDao.guardarPremioIncremental(clpdPremioIncremental);
		
	}

	public boolean esDescripcionPremioRepetido(BNPremioIncremental premioIncremental) {
		return incrementalDao.esDescripcionPremioRepetido(premioIncremental);
	}

	public boolean esValorPremioRepetido(BNPremioIncremental premioIncremental) {
		return incrementalDao.esValorPremioRepetido(premioIncremental);
	}
	
}